package jdbc;

import clases.*;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class JornadaJDBC {
    public static int obtenerNumeroJornadas(){
        int num = 0;

        return num;
    }
    
    public static boolean existeJornada(Jornada jornada){
        boolean existe = false;
        String sql = "select count(*) as num from jornada where numeroJornada LIKE "+jornada.getNumJornada()+" ";

        //System.out.println(sql);
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            if(rs.next()){
                int num = rs.getInt("num");
                if(num > 0){
                    existe = true;
                }
            }
            rs.close();
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al comprobar las jornadas "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }


        return existe;
    }

    public static int recuperarJornada(){
        String sql = "select max(idJornada) as num from jornada";
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;
        int num = -1;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            if(rs.next()){
                if(rs.getInt("num")== 0){
                    num = 0;
                }
                else{
                    num = rs.getInt("num");
                }
            }
        }
        catch(Exception e){
            System.out.println("Error al recuperar la jornada");
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }

        return num;
    }

    public static int insertarJornada(Jornada jornada){
        int fin = 0;
        if(jornada.isFinalizada()){
            fin = 1;
        }
        int num = -1;

        String sql = "insert into jornada(numeroJornada, finalizada) values ";
        sql += "("+jornada.getNumJornada()+", "+fin+" )";

        String sql2 = "select max(idJornada) as num from jornada";
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;
        //System.out.println(sql2);

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            st.execute(sql);
            rs = st.executeQuery(sql2);
            if(rs.next()){
                num = rs.getInt("num");
            }
            rs.close();
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al insertar una nueva jornada "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }

        return num;
    }

    public static void obtenerPrimeraJornadaSinFinalizar(Jornada jornada){
        String sql = "select * from jornada where finalizada = 0 order by numeroJornada limit 1";


        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            if(rs.next()){
                if(rs.getInt("finalizada") == 0){
                    jornada.setFinalizada(false);
                }
                else{
                    jornada.setFinalizada(true);
                }
                jornada.setIdJornada(rs.getInt("idJornada"));
                jornada.setNumJornada(rs.getInt("numeroJornada"));
            }
            rs.close();
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al recuperar la jornada "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
    }

    public static ArrayList obtenerTodasJornadas(){
        String sql = "select * from jornada order by idJornada";

        ArrayList<Jornada> lista = new ArrayList<Jornada>();
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;
        

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            while(rs.next()){
                Jornada jornada = new Jornada();
                jornada.setIdJornada(rs.getInt("idJornada"));
                jornada.setNumJornada(rs.getInt("numeroJornada"));
                if(rs.getInt("finalizada") == 0){
                    jornada.setFinalizada(false);
                }
                else{
                    jornada.setFinalizada(true);
                }
                lista.add(jornada);
            }
        }
        catch(Exception e){
            System.out.println("Error al obtener todas las jornadas "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }

        return lista;
    }


}
